Software engineering or software development is performed by teams that often follow a set of processes or methodologies. These processes vary greatly, ranging from processes that prescribe every step in detail and require every step to be documented, to agile processes that avoid rigid detail and documentation. As a result, software developers often have to learn new processes that are very different from the processes they already know and implement. There are several issues that make teaching software development processes difficult. One of these issues is the difficulty of teaching how to apply software development processes in practice, as opposed to simply teaching the steps in the processes. Another issue with current methods for teaching software development processes is the difficulty of teaching software developers how to effectively interact with other team members while developing software. Effective interaction amongst development teams is essential to the success of large scale software development projects. Another issue that arises in teaching software development processes is on-the-job training that can be disruptive and can delay software development projects.
Currently, paper-based simulations are commonly used to introduce teamwork and interaction to software development training. However, using paper-based simulations to teach software development dictates that the simulations must be extremely simple, or the simulations will take too much time to complete. Furthermore, paper-based simulations simulate time ineffectively, and time and schedule are critical issues for software development processes.
Current simulations involving several team members include multi-role video games. However, multi-role video games have an extremely simple model of time since multi-role video games operate in real time. In contrast, a software development project needs to be simulated much faster than real time. A development project that may take several months to complete usually needs to be simulated in one day. Training for multiple trainees using discrete event simulation has been restricted to extremely complex and expensive systems used by the military to teach military tactics, for example.
A current software project simulator is referred to as SimSE, which is described in a 2006 PhD dissertation by Emily Oh Navarro at the University of California at Irvine. SimSE focuses on teaching a single user, i.e., the project manager, rules of thumb concerning software development team size and how hard to push the team during the development project. SimSE does not allow training of other team members and does not allow team interaction.
Current systems for facilitating group learning are described, for example, in U.S. Pat. No. 6,160,987 entitled Computer-Aided Group Learning Environment (the '987 patent), U.S. Pat. No. 7,200,545 entitled, System and Method for Simulating Computer Network Devices for Competency Training and Testing Simulation (the '545 patent), and U.S. Pat. No. 6,067,538, entitled System, Method, and Article of Manufacture for a Simulation Enabled Focused Feedback Tutorial System (the '538 patent). The '987 patent discloses a system that facilitates group learning, where a group works together to solve problems. The '545 patent describes a user interacting with simulated network devices. The interface presents various scenarios, allowing the user to understand the behavior of network devices. The '538 patent describes an expert system that watches the learner interact with a simulated business environment consisting of spreadsheets, e-mail, etc. The system notes mistakes made by the user and generates realistic consequences. None of the patents describe interactive, team-based methods for teaching software development processes.